logstash 工作机制

前言

Logstash数据处理管道有三个阶段:输入→过滤器→输出。输入数据,过滤器处理数据,并将其输出到目的地。输入和输出支持编解码器,可以在数据进入或退出pipeline时对数据进行编码或解码,而无需使用单独的过滤器。总之一句话概括,logstash可以帮助我们对不同来源的数据,进行统一的转换处理,然后输出到指定的地方存储,便于日后的统计和分析,例如:Elasticsearch等。

工作机制

image

处理流程:

  1. input插件:数据从file,stdin,redis,kafka等各渠道来源处输入到logstash管道处理器(不同渠道来源处对应不同的INPUT插件);
  2. filter插件:不同的过滤器插件对输入的数据进行处理,每个FILTER插件功能职责单一;
  3. output插件:logstash管道处理完成之后,将数据输出到file,elasticsearch等不同的目的地(对应于不同的OUTPUT插件);

input 插件

从不同的输入渠道获取数据,这里以file input插件为例,简单说明其使用。不同的插件设置参数不同,含义不同,具体参照官方插件使用说明。

input {

file {
path => ["/var/log/*.log", "/var/log/message"]
exclude => "*.gz"
start_position => "beginning"
type => "accesslog"
}

# 可配置多个数据来源
.......
}

filter 插件

grok filter插件,date filter插件使用示例:

filter {
grok {
match => ["message", "%{HTTPDATE:logdate}"]
}
date {
match => ["logdate", "dd/MMM/yyyy:HH:mm:ss Z"]
}
}

output 插件

elasticsearch output 插件使用示例:

output {

elasticsearch {
host => "192.168.1.111"
protocol => "http"
index => "logstash-%{type}-%{+YYYY.MM.dd}"
index_type => "%{type}"
workers => 5
template_overwrite => true
}

# 可配置多个目的地
.......
}

参考链接

  1. https://www.elastic.co/guide/en/logstash/5.6/pipeline.html
  2. https://www.elastic.co/guide/en/logstash/5.6/input-plugins.html
  3. https://www.elastic.co/guide/en/logstash/5.6/filter-plugins.html
  4. https://www.elastic.co/guide/en/logstash/5.6/output-plugins.html
  5. https://www.elastic.co/guide/en/logstash/5.6/codec-plugins.html